DUP - DUP2

            
#include <io.h>      требуется  только для  объявления функций

int dup(handle);     создает   второй   handle-р   для открытого файла
int handle;          handle-р, ссылающийся на открытый файл
            
int dup2(handle1, handle2); форсирует handle1 для  ссылки  на handle2 файла
            
int handle1;         handle-р, ссылающийся на открытый файл
int handle2;         любое значение handle

Описание.
Функции dup и dup2 вызывают второй handle -р файла, связанный с открытым файлом. Операции в файле могут пересылаться handle -ром, тогда как все handl e-ры, связанные с заданным файлом, используют тот же самый указатель на файл. Создание нового handle не влияет на тип доступа файла.
Функция dup возвращает следующий доступный handle -р для заданного файла. Функция dup2 форсирует (force ) заданный handle , т.е. handle2 , чтобы сослаться на тот же самый файл, на который ссылается handle1 . Если во время вызова handle2 связан с открытымфайлом, то этот файл закрывается.

Возвращаемое значение.
Функция dup возвращает новый handle -р файла. Функция dup2 возвращает 0 в случае успеха. Если возникает ошибка, обе функции возвращают -1 и errno устанавливается в одно из следующих значений.

            
ВЕЛИЧИНА                 		СМЫСЛОВОЕ  ЗНАЧЕНИЕ
EBADF               		Неверный handle-р файла
EMFILE              		Другие   handle-ры файла  для него не доступны, т.к.  много  открытых файлов

Пример:

            
#include <io.h>
#include <stdlib.h>
      
int fh;
.
.
.
               /* выбирает другой handle-р файла, чтобы сослаться  на  тот
         же самый файл, на который указывает handle1 (stdout) */
            
fh = dup(1);
            
if (fh == -1)
               perror("dup(1) failure");
            
               /*  создает  handle3 файла для ссылки на тот же самый файл,
         на который ссылается handle 1 (stdout). Если handle3 файла  явля-
         ется также открытым, он закрывается первым */
            
fh = dup2(1,3);
            
if (fh != 0)
               perror("dup2(1,3) failure");.
            
    
Hosted by uCoz